package main

import (
	"fmt"
	zinterface "zinx/zInterface"
	"zinx/znet"
)

//基于zinx框架来开发的，服务器端应用程序
//在v0.3版本中已经支持用户自定义router了，用户可以根据需要重写router的三个方法

// 重写router的三个方法进行测试
type PingRouter struct{
	//继承BaseRouter
	znet.BaseRouter
}

//处理连接业务conn的主方法
func(r *PingRouter)Handle(req zinterface.IRequest){
	fmt.Println("call Router Handle...")
	//将接收到的数据打印出来
	fmt.Printf("recv from client: msgID = %d,data = %s\n",req.GetMsgID(),req.GetData())
	//然后给客户端返回ping ping ping...
	err := req.GetConnection().SendMsg(1,[]byte("ping ping ping...\n"))
	if err != nil{
		fmt.Println("call back ping error")
	}
}

func main(){
	//1.创建一个server句柄，使用zinx的api
	s := znet.NewServer("[zinx v0.5]")

	//在启动之前添加router
	s.AddRouter(&PingRouter{})

	//2.启动server
	s.Serve()
}